
#include "Bullet/Bullet.h"

// 子弹变量 初始化

//构造函数
Bullet::Bullet() {
	//调用init函数
	//调用精灵初始化函数 并且赋值
	sprite = Sprite::create();
	sprite->setScale(2);
	//调用动作初始化函数  并且赋值
	bullet_init();
	this->scheduleUpdate();
}

void Bullet::bullet_init() {
	attack_num = 1; // damage scale
	is_crash = false; // 判断是否碰撞变量 
}

//精灵初始化  参1 精灵图片名字  参2 二维坐标
// 精灵图 使用 豌豆的   大小设置为1  位置
void Bullet::sprite_init(const Vec2& position_) {
	sprite = Sprite::create("Bullet/PeaBullet0.png");
	sprite->setScale(1.5f);
	sprite->setPosition(position_);
	position = position_;
}

//修改系统的时间调度函数  
//参数 update_time 是系统调用该函数 的间隔时间
void Bullet::update(double update_time) {
	//状态 如果is_crash 为true 则删除子弹 并且产生碰撞音效 
} // 

//创建子弹移动动画 
void Bullet::bullet_move_animation() {
	//auto bullet_movement = MoveTo::create(2.0f, Vec2(1000,position.y)); // Position of the leftmost zombie in that row
	//sprite->setScale(1.0f);
	//auto bullet_move_animate = Sequence::create(bullet_callback_audio, bullet_movement, nullptr);
	sprite->runAction(MoveTo::create(4.0f, Vec2(1000, position.y)));
}


//获取二维坐标
Vec2 Bullet::get_position() const {
	return position;
}

//获取精灵 x坐标
double Bullet::get_x() const {
	return sprite->getPositionX();
}

//获取精灵 y 坐标
double Bullet::get_y() const {
	return sprite->getPositionY();
}

// 判断是否碰撞
bool Bullet::judge_crash() {
	return is_crash;
}

//设置碰撞
void Bullet::set_crash() {
	is_crash = true;
}

//设置 攻击伤害   参数：子弹伤害
void Bullet::set_attack_num(double plant_damage) {// damage scale
	this->attack_num = plant_damage;
}

//删除 精灵 is_crash 变量执行  未完善
void Bullet::delete_sprite() {
	if (is_crash) {
		this->removeChild(this, true); // "this" stands for bullet object
	}
}

